#include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h"
#ifdef __cplusplus
extern "C" {
#endif
btDbvtProxy* bullet_NewbtDbvtProxy(btVector3* aabbMin,btVector3* aabbMax,void* userPtr,int collisionFilterGroup,int collisionFilterMask){
	btVector3 const& c_arg_aabbMin=(btVector3 const&)(*aabbMin);
	btVector3 const& c_arg_aabbMax=(btVector3 const&)(*aabbMax);
	void * c_arg_userPtr=(void *)(void*)(userPtr);
	int c_arg_collisionFilterGroup=collisionFilterGroup;
	int c_arg_collisionFilterMask=collisionFilterMask;
	btDbvtProxy* wrap_out = new btDbvtProxy(c_arg_aabbMin,c_arg_aabbMax,c_arg_userPtr,c_arg_collisionFilterGroup,c_arg_collisionFilterMask);
	return wrap_out;
}

btDbvtNode** bullet_btDbvtProxy_GetFieldOfLeaf(btDbvtProxy* c_this){
	return (btDbvtNode**)(&c_this->leaf);
}

int bullet_btDbvtProxy_GetFieldOfStage(btDbvtProxy* c_this){
	return (int)(c_this->stage);
}

btDbvtBroadphase* bullet_NewbtDbvtBroadphase(btOverlappingPairCache* paircache){
	btOverlappingPairCache * c_arg_paircache=(btOverlappingPairCache *)(void*)(paircache);
	btDbvtBroadphase* wrap_out = new btDbvtBroadphase(c_arg_paircache);
	return wrap_out;
}

void bullet_btDbvtBroadphase_benchmark(btDbvtBroadphase* c_this,btBroadphaseInterface* tmp_arg0){
	btBroadphaseInterface * c_arg_tmp_arg0=(btBroadphaseInterface *)(void*)(tmp_arg0);
	c_this->benchmark(c_arg_tmp_arg0);
}

void bullet_btDbvtBroadphase_collide(btDbvtBroadphase* c_this,btDispatcher* dispatcher){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	c_this->collide(c_arg_dispatcher);
}

int bullet_btDbvtBroadphase_GetFieldOfM_cid(btDbvtBroadphase* c_this){
	return (int)(c_this->m_cid);
}

int bullet_btDbvtBroadphase_GetFieldOfM_cupdates(btDbvtBroadphase* c_this){
	return (int)(c_this->m_cupdates);
}

bool bullet_btDbvtBroadphase_GetFieldOfM_deferedcollide(btDbvtBroadphase* c_this){
	return (bool)(c_this->m_deferedcollide);
}

int bullet_btDbvtBroadphase_GetFieldOfM_dupdates(btDbvtBroadphase* c_this){
	return (int)(c_this->m_dupdates);
}

int bullet_btDbvtBroadphase_GetFieldOfM_fixedleft(btDbvtBroadphase* c_this){
	return (int)(c_this->m_fixedleft);
}

int bullet_btDbvtBroadphase_GetFieldOfM_fupdates(btDbvtBroadphase* c_this){
	return (int)(c_this->m_fupdates);
}

int bullet_btDbvtBroadphase_GetFieldOfM_gid(btDbvtBroadphase* c_this){
	return (int)(c_this->m_gid);
}

bool bullet_btDbvtBroadphase_GetFieldOfM_needcleanup(btDbvtBroadphase* c_this){
	return (bool)(c_this->m_needcleanup);
}

int bullet_btDbvtBroadphase_GetFieldOfM_newpairs(btDbvtBroadphase* c_this){
	return (int)(c_this->m_newpairs);
}

int bullet_btDbvtBroadphase_GetFieldOfM_pid(btDbvtBroadphase* c_this){
	return (int)(c_this->m_pid);
}

double bullet_btDbvtBroadphase_GetFieldOfM_prediction(btDbvtBroadphase* c_this){
	return (double)(c_this->m_prediction);
}

bool bullet_btDbvtBroadphase_GetFieldOfM_releasepaircache(btDbvtBroadphase* c_this){
	return (bool)(c_this->m_releasepaircache);
}

btDbvt** bullet_btDbvtBroadphase_GetFieldOfM_sets(btDbvtBroadphase* c_this){
	return (btDbvt**)(&c_this->m_sets);
}

int bullet_btDbvtBroadphase_GetFieldOfM_stageCurrent(btDbvtBroadphase* c_this){
	return (int)(c_this->m_stageCurrent);
}

unsigned int bullet_btDbvtBroadphase_GetFieldOfM_updates_call(btDbvtBroadphase* c_this){
	return (unsigned int)(c_this->m_updates_call);
}

unsigned int bullet_btDbvtBroadphase_GetFieldOfM_updates_done(btDbvtBroadphase* c_this){
	return (unsigned int)(c_this->m_updates_done);
}

double bullet_btDbvtBroadphase_GetFieldOfM_updates_ratio(btDbvtBroadphase* c_this){
	return (double)(c_this->m_updates_ratio);
}

double bullet_btDbvtBroadphase_getVelocityPrediction(btDbvtBroadphase* c_this){
	btScalar c_out = c_this->getVelocityPrediction();
	double wrap_out = (c_out);
	return wrap_out;
}

void bullet_btDbvtBroadphase_optimize(btDbvtBroadphase* c_this){
	c_this->optimize();
}

void bullet_btDbvtBroadphase_performDeferredRemoval(btDbvtBroadphase* c_this,btDispatcher* dispatcher){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	c_this->performDeferredRemoval(c_arg_dispatcher);
}

void bullet_btDbvtBroadphase_setAabbForceUpdate(btDbvtBroadphase* c_this,btBroadphaseProxy* absproxy,btVector3* aabbMin,btVector3* aabbMax,btDispatcher* tmp_arg3){
	btBroadphaseProxy * c_arg_absproxy=(btBroadphaseProxy *)(void*)(absproxy);
	btVector3 const& c_arg_aabbMin=(btVector3 const&)(*aabbMin);
	btVector3 const& c_arg_aabbMax=(btVector3 const&)(*aabbMax);
	btDispatcher * c_arg_tmp_arg3=(btDispatcher *)(void*)(tmp_arg3);
	c_this->setAabbForceUpdate(c_arg_absproxy,c_arg_aabbMin,c_arg_aabbMax,c_arg_tmp_arg3);
}

void bullet_btDbvtBroadphase_setVelocityPrediction(btDbvtBroadphase* c_this,double prediction){
	btScalar c_arg_prediction=prediction;
	c_this->setVelocityPrediction(c_arg_prediction);
}

#ifdef __cplusplus
}
#endif
